package com.wfy.modules.sys.web;

import com.wfy.common.entity.Result;
import com.wfy.common.entity.ResultGenerate;
import com.wfy.common.security.shiro.utils.ShiroHolder;
import com.wfy.common.web.BaseController;
import com.wfy.modules.sys.dto.MenuDto;
import com.wfy.modules.sys.entity.Menu;
import com.wfy.modules.sys.secutiry.PrincipalUser;
import com.wfy.modules.sys.service.IMenuService;
import com.wfy.modules.sys.vo.MenuVo;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 *
 * @author: wangxindong
 * @date: 2018/1/30-14:29
 */
@Api("菜单管理")
@RestController
@RequestMapping(value = "/v1/sys/menu")
public class MenuController extends BaseController {

    // ================================================================
    // Constants
    // ================================================================

    // ================================================================
    // Fields
    // ================================================================

    @Autowired
    private IMenuService<Menu> menuService;

    // ================================================================
    // Constructors
    // ================================================================

    // ================================================================
    // Methods from/for super Interfaces or SuperClass
    // ================================================================

    // ================================================================
    // Public or Protected Methods
    // ================================================================


    /**
     * 根据id获取菜单信息
     *
     * @param id
     * @return
     */
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public Result get(@PathVariable String id) {
        Menu menu = menuService.selectById(id);
        return ResultGenerate.getSuccessResult(menu);
    }

    /**
     * 根据用户id获取所有菜单信息
     *
     * @return
     */
    @RequestMapping(value = "getByUserId", method = RequestMethod.GET)
    public Result getByUserId() {
        PrincipalUser user = ShiroHolder.getUser();
        Menu m = new Menu();
        m.setUserId(user.getId());
        List<Menu> menus = menuService.selectMenuListByUserId(m);
        MenuVo vo = new MenuVo();
        List<MenuVo> menuVos = vo.merge(menus);
        return ResultGenerate.getSuccessResult(menuVos);
    }

    /**
     * 创建菜单
     *
     * @param menuDto
     * @return
     */
    @RequestMapping(value = "", method = RequestMethod.POST)
    public Result save(@Valid @RequestBody MenuDto menuDto) {
        return null;
    }

    /**
     * 修改菜单
     *
     * @param menuDto
     * @return
     */
    @RequestMapping(value = "", method = RequestMethod.PATCH)
    public Result update(@Valid @RequestBody MenuDto menuDto) {
        return null;
    }

    /**
     * 删除菜单
     *
     * @param id
     * @return
     */
    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
    public Result delete(@PathVariable String id) {
        menuService.deleteById(id);
        return ResultGenerate.getSuccessResult();
    }


    // ================================================================
    // Getter & Setter
    // ================================================================

    // ================================================================
    // Private Methods
    // ================================================================


    // ================================================================
    // Inner or Anonymous Class
    // ================================================================

    // ================================================================
    // Test Methods
    // ================================================================

}
